//将x减到0的最小操作数；
//实例1：
//输出：nums=[1,1,4,2,3]，x=5; 输出：2；
//实例2：
//输出：nums=[5,6,7,8,9],x=4; 输出：-1；
//实例3；
//输入：nums=[3,2,20,1,1,3],x=10; 输出：5；
public class NM2 {
    public static int fun(int[] nums,int x){
        //1.定义相关变量：
        int sum=0;//数组所有元素之和；
        for(int a:nums){
            sum+=a;
        }
        int target=sum-x;//中间所有元素之和；
        //进行细节处理；
        if(target<0){
            return -1;
        }
        int ret=-1;//返回结果变量；
        for(int left=0,right=0,tmp=0;right<nums.length;right++){
            //1.进行进窗口操作；
            tmp+=nums[right];
            //2，判断；
            while(tmp>target){
                //3。进行出窗口操作
                tmp-=nums[left++];
            }
            if(tmp==target){
                //4，进行更新结果；
                ret=Math.max(ret,right-left+1);
            }
        }
        if(ret==-1){
            return ret;
        }else{
            return nums.length-ret;
        }
    }
    public static void main(String[] args){
        int[] nums={1,1,4,2,3};
        int x=5;
        int ret=fun(nums,x);
        System.out.println("将x减到0的最小操作数；"+ret);
    }
}
